﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using coliseu.BussinessLayer;

namespace coliseu.Views.Condominio
{
    public partial class FrmCadMorador : Form
    {
        private MoradorBL mBL;
        private morador m;
        private Morador_ContatoBL mcBL = new Morador_ContatoBL();
        private Morador_ApartamentoBL maBL = new Morador_ApartamentoBL();
        private string tipo_imagem;

        public FrmCadMorador(MoradorBL mBL)
        {
            InitializeComponent();
            this.mBL = mBL;
            moradorBindingSource.AddNew();
            tabControl1.TabPages.RemoveAt(1);

            fotoPictureBox.Image = Properties.Resources.clear;
            tipo_imagem = "png";

            btnaddapto.Enabled = false;
            btncancelapto.Enabled = false;
        }

        public FrmCadMorador(MoradorBL mBL, morador m)
        {
            InitializeComponent();
            this.mBL = mBL;
            this.m = m;

            id_moradorTextBox.Enabled = false;
            moradorBindingSource.DataSource = m;

            fotoPictureBox.Image = Classes.Utils.byteArrayToImage(((morador)moradorBindingSource.Current).foto);
        }

        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            ValidateChildren();
            Validate();

            ((morador)moradorBindingSource.Current).foto = Classes.Utils.imageToByteArray(fotoPictureBox.Image, tipo_imagem);

            moradorBindingSource.EndEdit();

            if (m == null)
            {
                mBL.salvar((morador)moradorBindingSource.Current, "insert");
                tabControl1.TabPages.Add(tabPage2);

                btnaddapto.Enabled = true;
                btncancelapto.Enabled = true;
            }
            else
            {
                mBL.salvar((morador)moradorBindingSource.Current, "edit");
                Close();
            }

            MessageBox.Show("Salvo com sucesso", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }

        private void button7_Click(object sender, EventArgs e)
        {
            ((morador_contato)morador_contatoBindingSource.Current).tipo = comboBox4.Text;
            ((morador_contato)morador_contatoBindingSource.Current).id_morador = ((morador)moradorBindingSource.Current).id_morador;
            morador_contatoBindingSource.EndEdit();
            mcBL.salvar((morador_contato)morador_contatoBindingSource.Current);
            morador_contatoBindingSource.DataSource = mcBL.selecionar(((morador)moradorBindingSource.Current).id_morador);
            groupBox1.Enabled = false;
        }

        private void button6_Click(object sender, EventArgs e)
        {
            morador_contatoBindingSource.AddNew();
            groupBox1.Enabled = true;
            comboBox4.Focus();
        }

        private void button5_Click(object sender, EventArgs e)
        {
            mcBL.excluir((morador_contato)morador_contatoBindingSource.Current);
            morador_contatoBindingSource.DataSource = mcBL.selecionar(((morador)moradorBindingSource.Current).id_morador);
        }

        private void toolStripButton3_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void FrmCadMorador_Load(object sender, EventArgs e)
        {
            morador_contatoBindingSource.DataSource = mcBL.selecionar(((morador)moradorBindingSource.Current).id_morador);
            morador_apartamentoBindingSource.DataSource = maBL.selecionar(((morador)moradorBindingSource.Current).id_morador);

            carregaGrid();
        }

        private void btnaddapto_Click(object sender, EventArgs e)
        {
            FrmCadMoradorApartamento m = new FrmCadMoradorApartamento((morador)moradorBindingSource.Current);
            m.ShowDialog();

            carregaGrid();
        }

        private void btncancelapto_Click(object sender, EventArgs e)
        {
            try
            {
                DataGridViewRow row = dataGridView1.CurrentRow;
                int x = Convert.ToInt32(row.Cells["id_apartamento"].Value);

                maBL.excluir(((morador)moradorBindingSource.Current).id_morador, x);

                carregaGrid();
            }
            catch
            {
            }
        }

        public void carregaGrid()
        {
            var query = from ma in maBL.selecionar(((morador)moradorBindingSource.Current).id_morador)
                        select new { ma.tipo, ma.apartamento.id_bloco, ma.apartamento.numero, ma.responsavel, ma.ANIMAL, ma.id_apartamento };

            var results = query.ToList();

            dataGridView1.DataSource = results;
        }
    }

    //public class gridApartamento
    //{
    //    public string tipo { get; set; }
    //    public string id_bloco { get; set; }
    //    public string numero { get; set; }
    //    public bool responsavel { get; set; }
    //    public bool animal { get; set; }

    //    public gridApartamento(string tipo, string id_bloco, string numero, bool responsavel, bool animal)
    //    {
    //        this.animal = animal;
    //        this.responsavel = responsavel;
    //        this.numero = numero;
    //        this.tipo = tipo;
    //        this.id_bloco = id_bloco;
    //    }
    //}
}
